package com.william.jdbcplus.core.dialects.meta;

import com.william.jdbcplus.core.util.datameta.*;

import javax.sql.DataSource;
import java.util.List;

/**
 * 数据库信息
 */
public interface IMeta {

    /**
     * 获取数据库表字段信息列表
     *
     * @param ds
     * @return
     */
    List<TableMetaColumnInfo> getColumnMeta(DataSource ds, String tableName);

    /**
     * 获取数据库主键信息列表
     *
     * @param ds
     * @return
     */
    List<TableMetaPkInfo> getPkMeta(DataSource ds, String tableName);

    /**
     * 获取数据库外键信息列表
     *
     * @param ds
     * @return
     */
    List<TableMetaFkInfo> getFkMeta(DataSource ds, String tableName);

    /**
     * 获取数据库外键信息列表
     *
     * @param ds
     * @return
     */
    List<TableMetaFkInfo> getFkMetaList(DataSource ds);

    /**
     * 获取数据库索引信息列表
     *
     * @param ds
     * @return
     */
    List<TableMetaIndexInfo> getIndexMeta(DataSource ds, String tableName);

    /**
     * 获取数据表信息列表
     *
     * @param ds
     * @return
     */
    List<TableMetaInfo> getTableMeta(DataSource ds);

    /**
     * 获取数据表信息列表
     *
     * @param ds
     * @return
     */
    TableMetaInfo getTableMeta(DataSource ds, String tableName);

    /**
     * 获取数据库信息
     *
     * @param ds
     * @return
     */
    DatabaseMetaInfo getDbMeta(DataSource ds);
}
